package org.nerve.fs;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 分布式文件系统接口
 * Created by zengxm on 2015/9/28 0028.
 */
public interface DFileSystem {

	/**
	 * 将本地的一个文件放入分布式文件系统中
	 * @param file
	 */
	void upload(File file)throws IOException;

	/**
	 * @param directory     文件夹
	 * @param withChildren  是否遍历子文件夹
	 */
	void uploadDir(File directory, boolean withChildren) throws IOException;

	/**
	 * 判断指定路径的文件是否存在
	 * @param path
	 * @return
	 */
	boolean isExist(String path);

	DFile get(String path);

	List<DFile> listFiles(String path);

	/**
	 * 删除文件
	 * 注意：如果删除的是一个不为空的目录，将无法删除
	 * @param file
	 */
	boolean delete(File file);

	boolean delete(String filePath);

	/**
	 * 创建目录
	 * @param path
	 */
	boolean mkdir(String path);
	boolean mkdirs(String path);


	/**
	 * 保存指定的字符串到path对应的文件中
	 *
	 * 注意：如果path对应的文件不存在，则会自动创建
	 * 如果存在，则报错
	 * @param path
	 * @param fileContent
	 */
	void write(String path, String fileContent);

	/**
	 * 将is写入指定文件中
	 * 如果文件不存在则创建，存在的话，报错
	 * @param path
	 * @param is
	 */
	void write(String path, InputStream is);
}
